home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / mac_label.h.z / mac_label.h
C/C++ Source or Header  |  1992-04-03  |  6KB  |  142 lines

  1.  
  2. /**************************************************************************
  3.  *                                      *
  4.  *          Copyright (C) 1988, Silicon Graphics, Inc.          *
  5.  *                                      *
  6.  *  These coded instructions, statements, and computer programs  contain  *
  7.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  8.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  9.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  10.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  11.  *                                      *
  12.  **************************************************************************/
  13.  
  14. #ifndef    __MAC_LABEL_
  15. #define    __MAC_LABEL_
  16.  
  17. #ident "$Header: /src_trees/calypso/att/usr/src/uts/mips/sys/RCS/mac_label.h,v 1.12 91/11/12 13:45:16 pdc Exp $"
  18.  
  19. /*
  20.  * Allow for 26 (A-Z) MSEN label types.
  21.  * Expanding this will require a bigger table in mac_dom.c
  22.  */
  23. #define MSEN_MIN_LABEL_NAME    'A'    /* No label name less than this */
  24. #define MSEN_MAX_LABEL_NAME    'Z'    /* No label name greater than this */
  25. #define MSEN_LABEL_NAME_COUNT    26    /* Number of label types */
  26. #define MSEN_MIN_LEVEL        0    /* No level less than this     */
  27. #define MSEN_MAX_LEVEL        255    /* No level greater than this     */
  28. #define MSEN_MIN_CATEGORY    0    /* No category less than this     */
  29. #define MSEN_MAX_CATEGORY    65534    /* No category greater than this */
  30.  
  31. /*
  32.  * MSEN label type names. Choose an upper case ASCII character.
  33.  */
  34. #define MSEN_ADMIN_LABEL    'A'    /* Admin: low < admin != tcsec < high */
  35. #define MSEN_EQUAL_LABEL    'E'    /* Wildcard - always equal */
  36. #define MSEN_HIGH_LABEL        'H'    /* System High - always dominates */
  37. #define MSEN_MLD_HIGH_LABEL    'I'    /* System High, multi-level dir */
  38. #define MSEN_LOW_LABEL        'L'    /* System Low - always dominated */
  39. #define MSEN_MLD_LABEL        'M'    /* TCSEC label on a multi-level dir */
  40. #define MSEN_MLD_LOW_LABEL    'N'    /* System Low, multi-level dir */
  41. #define MSEN_TCSEC_LABEL    'T'    /* TCSEC label */
  42. #define MSEN_UNKNOWN_LABEL    'U'    /* unknown label */
  43. #define MSEN_EXACT_LABEL    'X'    /* Exact match required for access */
  44.  
  45. /*
  46.  * Allow for 26 (a-z) MINT label types.
  47.  * Expanding this will require a bigger table in mac_dom.c
  48.  */
  49. #define MINT_MIN_LABEL_NAME    'a'    /* No label name less than this */
  50. #define MINT_MAX_LABEL_NAME    'z'    /* No label name greater than this */
  51. #define MINT_LABEL_NAME_COUNT    26    /* Number of label types */
  52. #define MINT_MIN_GRADE        0    /* No grade less than this     */
  53. #define MINT_MAX_GRADE        255    /* No grade greater than this     */
  54. #define MINT_MIN_DIVISION    0    /* No division less than this     */
  55. #define MINT_MAX_DIVISION    65534    /* No division greater than this */
  56.  
  57. /*
  58.  * MINT label type names. Choose a lower case ASCII character.
  59.  */
  60. #define MINT_BIBA_LABEL        'b'    /* Dual of a TCSEC label */
  61. #define MINT_EQUAL_LABEL    'e'    /* Wildcard - always equal */
  62. #define MINT_HIGH_LABEL        'h'    /* High Grade - always dominates */
  63. #define MINT_LOW_LABEL        'l'    /* Low Grade - always dominated */
  64.  
  65. /*
  66.  * Layout of a label.
  67.  *
  68.  * ml_list contains the list of categories (MSEN) followed by the list of
  69.  * divisions (MINT). This is actually a header for the data structure which
  70.  * will have an ml_list with more than one element.
  71.  *
  72.  *    -------------------------------
  73.  *    | ml_msen_type | ml_mint_type |
  74.  *    -------------------------------
  75.  *    | ml_level     | ml_grade     |
  76.  *    -------------------------------
  77.  *    | ml_catcount                 |
  78.  *    -------------------------------
  79.  *    | ml_divcount                 |
  80.  *    -------------------------------
  81.  *    | category 1                  |
  82.  *    | . . .                       |
  83.  *    | category N                  | (where N = ml_catcount)
  84.  *    -------------------------------
  85.  *    | division 1                  |
  86.  *    | . . .                       |
  87.  *    | division M                  | (where M = ml_divcount)
  88.  *    -------------------------------
  89.  */
  90. #define MAC_MAX_SETS    250
  91.  
  92. typedef struct    mac_label {
  93.     unsigned char    ml_msen_type;    /* MSEN label type */
  94.     unsigned char    ml_mint_type;    /* MINT label type */
  95.     unsigned char    ml_level;    /* Hierarchical level  */
  96.     unsigned char    ml_grade;    /* Hierarchical grade  */
  97.     unsigned short    ml_catcount;    /* Category count */
  98.     unsigned short    ml_divcount;    /* Division count */
  99.                     /* Category set, then Division set */
  100.     unsigned short    ml_list[MAC_MAX_SETS];
  101. } mac_label;
  102.  
  103. /* function prototypes */
  104.  
  105. #ifdef _KERNEL
  106. extern void getplabel( mac_label * );
  107. extern void setplabel( mac_label * );
  108. extern void getlabel( char *, mac_label * );
  109. extern void setlabel( char *, mac_label * );
  110. extern int mac_access( struct inode *, int );
  111. extern mac_label * mac_copyin_label( mac_label * );
  112. extern mac_label * mac_add_label( mac_label * );
  113. extern int mac_inrange( mac_label *, mac_label *, mac_label * );
  114. extern int mac_mint_equ( mac_label *, mac_label * );
  115. extern int mac_cat_equ( mac_label *, mac_label * );
  116. #else  /* _KERNEL */
  117. extern int getplabel( mac_label * );
  118. extern int setplabel( mac_label * );
  119. extern int getlabel( char *, mac_label * );
  120. extern int setlabel( char *, mac_label * );
  121. #endif /* _KERNEL */
  122.  
  123. extern int mac_dom( mac_label *, mac_label * );
  124. extern int mac_equ( mac_label *, mac_label * );
  125. extern int mac_is_moldy( mac_label * );
  126. extern mac_label *mac_dup( mac_label * );
  127. extern int mac_size( mac_label * );
  128. extern mac_label *mac_demld( mac_label * );
  129. extern mac_label *mac_set_moldy( mac_label * );
  130. extern int mac_ltomld( mac_label *, char *, int );
  131. extern char *mac_labeltostr( mac_label *, int );
  132. extern mac_label *mac_strtolabel( const char * );
  133. extern int mac_invalid( mac_label * );
  134. extern char *mac_getname( int, int );
  135. extern int mac_getvalue( int, char * );
  136. extern char *mac_getlblname( char * );
  137. extern char *mac_getlblcomp( char * );
  138. extern int mac_same( mac_label *, mac_label * );
  139. extern int mac_copy( mac_label *, mac_label * );
  140. extern int mac_label_devs( char *, mac_label * );
  141. #endif    /* __MAC_LABEL_ */
  142.